﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MemoryDuosControl;

namespace MemoryDuosInterfaz
{
    public partial class GestionGalerias : Form
    {
        private List<Galería> lista;
        private List<String> listaNombres;

        public GestionGalerias()
        {
            InitializeComponent();
        }

        private void cargarGalerias()
        {
            lista = AccesoGaleria.LeerGalerías();
            var rellenar = lista.GroupBy(p => p.Nombre).ToList();
            listaNombres = rellenar.Select(p => p.Key).ToList();
            dataGridGalerias.DataSource = rellenar.ToList();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            var nombre = listaNombres.ElementAt(dataGridGalerias.CurrentRow.Index);
            EstadoPeticion estado = AccesoGaleria.EliminarGalería(nombre);
            if (!estado.Estado)
            {
                cargarGalerias();
                MessageBox.Show(estado.Error, "MemoryDuos", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
            else MessageBox.Show("la galería se ha eliminado correctamente");
        }

        private void GestionGalerias_Load(object sender, EventArgs e)
        {
            cargarGalerias();
        }

        private void GestionGalerias_FormClosed(object sender, FormClosedEventArgs e)
        {
            Owner.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            AnyadirGalerias anyadirGaleria = new AnyadirGalerias();
            anyadirGaleria.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            var nombre = listaNombres.ElementAt(dataGridGalerias.CurrentRow.Index);
            var listaGalerias = lista.Where(p => p.Nombre.Equals(nombre)).Select(p => p).ToList();
            List<Image> devolver = new List<Image>();
            List<int> ids = new List<int>();
            Cursor.Current = Cursors.WaitCursor;
            Parallel.ForEach(listaGalerias, item =>
            {
                Image gal = AccesoGaleria.LeerDeServidor(item);
                devolver.Add(gal);
                ids.Add(item.Codigo);
            });
            Cursor.Current = Cursors.Arrow;
            AnyadirGalerias editar = new AnyadirGalerias(listaGalerias, devolver);
            editar.ShowDialog();
        }

        private void dataGridGalerias_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        }

        private void GestionGalerias_Activated(object sender, EventArgs e)
        {
            cargarGalerias();
        }
    }
}
